package gphoto.services.impl;

import gphoto.dao.OptionDAO;
import gphoto.dao.impl.OptionDAOImpl;
import gphoto.exception.GPhotoException;
import gphoto.services.OptionServices;

import java.awt.Dimension;
import java.io.File;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;


public class OptionServicesImpl implements OptionServices {
	
	public static OptionServicesImpl conf = null;
		
	private OptionServicesImpl() {}

	public static OptionServices getInstance() {
		if (conf == null) {
			conf = new OptionServicesImpl();
		}
		return conf;
	}

	public List<String> getExtension() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	public File getFeuilleDeStyle() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	public Dimension getDimensionConseillee() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	public int getNbPhotoParPageATrier() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("NB_PHOTOS_PAR_PAGE_ATRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("NB_PHOTOS_PAR_PAGE_ATRIER"));
		} else {
			valeur = 40;
		}
		return valeur;
	}

	public int getNbColonneATrier() throws SQLException {
		
		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("NB_COLONNES_ATRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("NB_COLONNES_ATRIER"));
		} else {
			valeur = 4;
		}
		return valeur;
	}

	public int getNbPhotoParPageTrier() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("NB_PHOTOS_PAR_PAGE_TRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("NB_PHOTOS_PAR_PAGE_TRIER"));
		} else {
			valeur = 40;
		}
		return valeur;
	}

	public int getNbColonneTrier() throws SQLException {
		
		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("NB_COLONNES_TRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("NB_COLONNES_TRIER"));
		} else {
			valeur = 4;
		}
		return valeur;
	}

	public List<Dimension> getDimensionsRedimension() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	public String getCheminNConvert() throws SQLException, GPhotoException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		return optDAO.getValuesOption("PATH_NCONVERT");
	}
	
	public String getCheminCorbeille() throws SQLException, GPhotoException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		return optDAO.getValuesOption("PATH_CORBEILLE");
	}

	public int getTaillePhotoConseillee() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_PHOTO_CONSEILLEE") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_PHOTO_CONSEILLEE"));
		} else {
			valeur = 1600;
		}
		return valeur;
	}

	public int getTailleVignette() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_VIGNETTE_GENEREE") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_VIGNETTE_GENEREE"));
		} else {
			valeur = 120;
		}
		return valeur;
	}

	public int getTailleVignetteATrier() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_AFF_VIGNETTE_ATRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_AFF_VIGNETTE_ATRIER"));
		} else {
			valeur = 120;
		}
		return valeur;
	}

	public int getTailleVignetteTrier() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_AFF_VIGNETTE_TRIER") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_AFF_VIGNETTE_TRIER"));
		} else {
			valeur = 120;
		}
		return valeur;
	}

	public String getPasswordMD5() throws SQLException, GPhotoException {
		
		OptionDAO optDAO = OptionDAOImpl.getInstance();
		return optDAO.getValuesOption("PASSWORD_MD5");
	}

	public Map<String, String> getAllOptions() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		return optDAO.getAllOptions();
	}

	public int getTailleEnKoPhotoConseillee() throws SQLException {
		
		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_KO_PHOTO_CONSEILLE") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_KO_PHOTO_CONSEILLE"));
		} else {
			valeur = 120;
		}
		return valeur;
	}
	
	public int getTailleMaxCorbeille() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		int valeur;
		if (optDAO.getValuesOption("TAILLE_MAX_CORBEILLE") != null) {
			valeur = Integer.parseInt(optDAO.getValuesOption("TAILLE_MAX_CORBEILLE"));
		} else {
			valeur = 120;
		}
		return valeur;
	}
	
	public String getNomServeur() throws SQLException {

		OptionDAO optDAO = OptionDAOImpl.getInstance();
		return optDAO.getValuesOption("NOM_SERVEUR");
	}
}
